import qs from 'qs';
import { storage } from '@/tools/storage';

export const router = {
    /*
        路由跳转
        url：跳转路由
        query： 参数
        type：方式，可选navigateTo/redirectTo/reLaunch/switchTab
    */
    go: (url, type = 'navigateTo', query = {}) => {
        if (!url) {
            return false;
        }
        if (type == 'switchTab') {
            uni.switchTab({
                url: url
            });
        } else {
            const queryStr = Object.keys(query).length ? `?${qs.stringify(query)}` : '';
            uni[type]({
                url: `${url}${queryStr}`
            });
        }
    },
    // 返回
    back: (delta = 1) => {
        uni.navigateBack({
            delta: delta
        });
    },
    /*
        路由拦截
        注意：拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。所以误认为拦截无效，此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。
    */
    interceptors: () => {
        // 拦截api
        const apiList = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
        // 拦截路由
        const routerList = ['/pages/demo/demo1'];
        apiList.forEach(item => {
            uni.addInterceptor(item, {
                invoke: (route) => {
                    // console.log(route);
                    const token = storage.get('token');
                    // 判断是否需要登录
                    if (!token && route.url != '/pages/Login/Login') {
                        router.go('/pages/Login/Login', 'reLaunch');
                        return false;
                    }
                    if (routerList.includes(route.url)) {
                        return false;
                    }
                    return route;
                },
                success: (e) => {
                    // console.log('interceptor-success', e);
                },
                fail: (err) => {
                    console.log('interceptor-fail', err);
                }
            });
        });
    }
};
